home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) Mark J. Kilgard, 1994. */
-
- /* This program is freely distributable without licensing fees
- and is provided without guarantee or warrantee expressed or
- implied. This program is -not- in the public domain. */
-
- #include "glut.h"
- #include "glutint.h"
-
- #define MAX_CURSOR 23
- #define BASE_CURSOR 1000
-
- static CursHandle cursorTable[MAX_CURSOR] = {
- NULL, /* GLUT_CURSOR_RIGHT_ARROW */
- NULL, /* GLUT_CURSOR_LEFT_ARROW */
- NULL, /* GLUT_CURSOR_INFO */
- NULL, /* GLUT_CURSOR_DESTROY */
- NULL, /* GLUT_CURSOR_HELP */
- NULL, /* GLUT_CURSOR_CYCLE */
- NULL, /* GLUT_CURSOR_SPRAY */
- NULL, /* GLUT_CURSOR_WAIT */
- NULL, /* GLUT_CURSOR_TEXT */
- NULL, /* GLUT_CURSOR_CROSSHAIR */
- NULL, /* GLUT_CURSOR_UP_DOWN */
- NULL, /* GLUT_CURSOR_LEFT_RIGHT */
- NULL, /* GLUT_CURSOR_TOP_SIDE */
- NULL, /* GLUT_CURSOR_BOTTOM_SIDE */
- NULL, /* GLUT_CURSOR_LEFT_SIDE */
- NULL, /* GLUT_CURSOR_RIGHT_SIDE */
- NULL, /* GLUT_CURSOR_TOP_LEFT_CORNER */
- NULL, /* GLUT_CURSOR_TOP_RIGHT_CORNER */
- NULL, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */
- NULL, /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */
- NULL, /* GLUT_CURSOR_INHERIT */
- NULL, /* GLUT_CURSOR_NONE */
- NULL /* GLUT_CURSOR_FULL_CROSSHAIR */
- };
-
- void glutSetCursor(int cursorID)
- {
- switch(cursorID)
- {
- case GLUT_CURSOR_RIGHT_ARROW:
- cursorID = 0;
- break;
- case GLUT_CURSOR_LEFT_ARROW:
- cursorID = 1;
- break;
- case GLUT_CURSOR_INFO:
- cursorID = 2;
- break;
- case GLUT_CURSOR_DESTROY:
- cursorID = 3;
- break;
- case GLUT_CURSOR_HELP:
- cursorID = 4;
- break;
- case GLUT_CURSOR_CYCLE:
- cursorID = 5;
- break;
- case GLUT_CURSOR_SPRAY:
- cursorID = 6;
- break;
- case GLUT_CURSOR_WAIT:
- cursorID = 7;
- break;
- case GLUT_CURSOR_TEXT:
- cursorID = 8;
- break;
- case GLUT_CURSOR_CROSSHAIR:
- cursorID = 9;
- break;
- case GLUT_CURSOR_UP_DOWN:
- cursorID = 10;
- break;
- case GLUT_CURSOR_LEFT_RIGHT:
- cursorID = 11;
- break;
- case GLUT_CURSOR_TOP_SIDE:
- cursorID = 12;
- break;
- case GLUT_CURSOR_BOTTOM_SIDE:
- cursorID = 13;
- break;
- case GLUT_CURSOR_LEFT_SIDE:
- cursorID = 14;
- break;
- case GLUT_CURSOR_RIGHT_SIDE:
- cursorID = 15;
- break;
- case GLUT_CURSOR_TOP_LEFT_CORNER:
- cursorID = 16;
- break;
- case GLUT_CURSOR_TOP_RIGHT_CORNER:
- cursorID = 17;
- break;
- case GLUT_CURSOR_BOTTOM_RIGHT_CORNER:
- cursorID = 18;
- break;
- case GLUT_CURSOR_BOTTOM_LEFT_CORNER:
- cursorID = 19;
- break;
- case GLUT_CURSOR_INHERIT:
- cursorID = 20;
- break;
- case GLUT_CURSOR_NONE:
- cursorID = 21;
- break;
- case GLUT_CURSOR_FULL_CROSSHAIR:
- cursorID = 22;
- break;
- default:
- __glutWarning("glutSetCursor: cursor id out of range");
- return;
- }
-
- if(!__glutCurrentWindow)
- {
- __glutWarning("glutSetCursor: no active window");
- return;
- }
-
- if(!cursorTable[cursorID])
- {
- cursorTable[cursorID] = GetCursor(BASE_CURSOR + cursorID);
- if(cursorTable[cursorID]) HLock((Handle) cursorTable[cursorID]);
- }
-
- if(cursorTable[cursorID])
- {
- SetCursor(*cursorTable[cursorID]);
-
- __glutCurrentWindow->cursor = cursorID;
- }
- }
-